﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace cilada.engine.Graph
{
    public interface IGraphAdapter<TVertex, TEdge>
    {
        #region Properties
        IEnumerable<TVertex> Vertices { get; }
        IEnumerable<TEdge> Edges { get; }
        #endregion

        #region Members
        void AddEdge(TEdge edge);
        void AddVertex(TVertex vertex);

        bool ContainsVertex(TVertex vertex);
        bool ContainsVertex(Func<TVertex, bool> pred, out TVertex vertex);
        TVertex GetVertex(Func<TVertex, bool> pred);

        void Graph2XML(string outputFileName, string outputDirectory);
        void PrintGraphToConsole();
        #endregion
    }
}
